"use strict"

/**
 * @适用于node环境的xlsx方法
 *   nodeReadXlsxFile() 直接从本地读取xlsx文件为AOA对象
 *   nodeDownloadXlsx() 写入工作簿xlsx文件
 */

/**
 * @库导入
 */
// 导入node文件系统
import { readFileSync } from "node:fs"
// 导入xlsx库，以XLSX作为引用对象
import * as XLSX from "xlsx"
// 导入导出app-xlsx.js可复用的方法
export {
  // 直接从本地读取xlsx文件为AOA对象
  sheetToAoa as nodeSheetToAoa,
  // 数组转置，同时检查数据类型
  aoaTranspose as nodeAoaTranspose,
  // AOA数据转为xlsx的Buffer对象
  aoaMapToWorkbook as nodeAoaMapToWorkbook,
} from "./app-xlsx.js"

/**
 * 直接从本地读取xlsx文件为workbook对象
 * @param { String } filePathName 文件（含路径）
 * @returns { XLSX.WorkBook } 工作簿对象
 */
export function nodeReadXlsxFile(filePathName) { try {
  // 直接从路径将工作簿文件读取为Buffer
  const dataBuffer = readFileSync(filePathName)
  // 将Buffer转为工作簿对象
  const workbook = XLSX.read(dataBuffer, { type: "buffer" })
  // 返回工作簿对象
  return workbook
} catch (error) {
  console.error("nodeReadXlsxFile()报错: ", err)
  throw new Error(error)
}}

/**
 * 写入工作簿xlsx文件
 * @param { XLSX.WorkBook } workbook 工作簿对象
 * @param { String } xlsxName 文件名
 */
export function nodeDownloadXlsx(workbook, xlsxName) { try {
  // 将工作簿写入output文件
  XLSX.writeFile(workbook, `./${ xlsxName }.xlsx`)
} catch (error) {
  console.error("nodeDownloadXlsx()报错: ", err)
  throw new Error(error)
}}
